/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jclient;

/**
 *
 * @author famiglia
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;


public class FinestraChat extends JFrame{//Finestra esclusivamente per la comunicazione
    private int myId;
    private String myNome;
    private JTextArea areaMsg;
    private JTextField msgInviato;
    private JButton invia = null;
    private Client principale;
    public FinestraChat(Client  princ,int id, String nome)
    {

        principale = princ;
        this.setmyId(id);//Viene settato id della finestra(con chi si sta parlando)
        this.setmyNome(nome);//Viene settato nome della finestra(con chi si sta parlando)
        setTitle("" + principale.getNomeClient() + " sta parlando con " + this.getmyNome());//Titolo della finestra
        invia = new JButton("Invia");
        areaMsg = new JTextArea();
        msgInviato = new JTextField(20);
        invia.addActionListener(new ActionListener()//Azione al click sul bottone invia
        {
            public void actionPerformed(ActionEvent e)
            {
                if((principale.Connesso()) && (!msgInviato.getText().equals(""))){//Controlla che sei connesso e che vi sia un messaggio da spedire
                    areaMsg.append(principale.getNomeClient() + " : " + msgInviato.getText()+"\n");//Stampa il mio messaggio
                    try{
                        DataOutputStream out = new DataOutputStream(principale.getClientSocket().getOutputStream());
                        out.writeBytes("-1|"+principale.getClientId()+"|"+ myId + "|"+msgInviato.getText()+"\n");//Manda il messaggio al Server
                    }catch(IOException ex){}
                    msgInviato.setText("");//Il campo msgInviato ritorna vuoto
                }
             }

        });
        Dimension dimareaMsg = new Dimension(263,157);
        areaMsg.setSize(dimareaMsg);
        Container panPrincipale = getContentPane();
        Container panCentro = new ScrollPane();
        Container panSud = new Panel();
        panCentro.add(areaMsg);
        panSud.add(invia);
        panSud.add(msgInviato);
        panPrincipale.add(panCentro,BorderLayout.CENTER);
        panPrincipale.add(panSud,BorderLayout.SOUTH);
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)//Evento di chiusura della finestra
            {
                for(int i=0;i<principale.winAperte.size();i++)
                {
                    if(  myId == principale.winAperte.get(i).getmyId())
                    {
                        principale.winAperte.remove(i);//La finestra viene rimossa dalla lista finestre aperte
                    }
                        
                }
                setVisible(false);//La finestra non è più visibile
            }
        });
        pack();
        setVisible(true);
    }
    public void stampaMsg(String Msg)//Stampa un msg nell'area designata
        {
            this.areaMsg.append(Msg +"\n");
        }

    public int getmyId()//Prende l'id della finestra
    {
        return this.myId;
    }

    public void setmyId(int id)
    {
        this.myId = id;
    }
    public String getmyNome()
    {
        return this.myNome;
    }

    public void setmyNome(String nome)
    {
        this.myNome = nome;
    }

    public void winChiusura()
    {
          setVisible(false);
    }
}
